<?php
session_start();

header('Content-Type:text/html;charset=utf-8');
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.6.0','<'))  die('PHP'.PHP_VERSION.'版本过低，最少需要PHP5.6，请升级PHP版本！');


define('IN_Deep', true);


// 定义 当前框架绝对路径  例：D:/wamp/www/deep_framework
defined('_APP_PATH_') or define('_APP_PATH_', str_replace("\\" ,"/", dirname(__DIR__))  );
// 定义 网站根目录绝对路径  例：D:/wamp/www
defined('_ROOT_PATH_') or define('_ROOT_PATH_', rtrim( str_replace("\\" ,"/",$_SERVER['DOCUMENT_ROOT']),'/') );

$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ?"https://": "http://";
// 定义 WEB 站点根路径常量 http://localhost
defined('_ROOT_URL_') or define('_ROOT_URL_', $protocol . $_SERVER['HTTP_HOST'] );
// 定义 WEB 平台路径常量 http://localhost/deep_framework
defined('_APP_URL_') or define('_APP_URL_', _ROOT_URL_ . str_replace( _ROOT_PATH_ ,'', _APP_PATH_ ) );

// 定义 多应用模式 目录名
defined('_ADDONS_NAME_') or define('_ADDONS_NAME_',  'application' );

// 读取配置
$GLOBALS["config"]  = require _APP_PATH_ . "/system/config.php";


////////////////////////////////////////
require __DIR__ . '/helper.php';

////////////////////////////////////////

require _APP_PATH_ . "/framework/db.php";

////////////////////////////////////////

require _APP_PATH_ . "/library/class/page.class.php";

// 应用默认模块
if( !isset( $_REQUEST['app']) || $_REQUEST['app']==''  ){ 
    $app = _ADDONS_NAME_ == 'system' ? 'admin' : 'cms';
}else{
    $app= $_REQUEST['app'];
}
if(!is_dir( _APP_PATH_ . '/' . _ADDONS_NAME_ . '/' .$app )){
    exit( '未发现应用目录' ); 
}


// 应用 - 类控制器
if( !isset( $_REQUEST['c']) || $_REQUEST['c']==''  ){ 
    $controller = 'index';
}else{
    $controller= str_replace('\\','/',$_REQUEST['c']);
}

if(!file_exists( _APP_PATH_ . '/' . _ADDONS_NAME_ . "/$app/controller/{$controller}.php")){
    exit( '未发现控制器文件' ); 
}


// 应用 - 类控制器 - 方法
if( !isset( $_REQUEST['a']) || $_REQUEST['a']==''  ){ 
    $action = 'index';
}else{
    $action= $_REQUEST['a'];
}


// 模块后台验证是否登录
if( (_ADDONS_NAME_ != 'system' && stripos( $controller , 'admin/')!==false )
	|| (_ADDONS_NAME_ == 'system' && $app!='install' && $controller != 'index') ){
   require _APP_PATH_ . "/system/auth.inc.php";
}


////////////////////////////////////////////////
// 控制器文件
require _APP_PATH_ . '/' . _ADDONS_NAME_ . "/{$app}/controller/{$controller}.php";


$controller= str_replace('/','\\',$controller);
//反射
//$o= new \ReflectionClass( 'application\\'.$app.'\\controller\\'.$controller);
//$o->newInstanceArgs()->$action();
$class= _ADDONS_NAME_ . '\\'.$app.'\\controller\\'.$controller ;
$o = new $class();
$o->$action();

